package com.cll.prototype.user.config.druid;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;

/**
 * 描述信息:
 *
 * @author CLL
 * @version 1.0
 * @date 2020/11/8 14:38
 */
@Configuration
public class DruidConfiguration {

    private static final Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);

    /**
     * 对应于配置文件中的stat-view-servlet
     * @return  打开druid的后台监控视图
     */
//    @Bean
//    public ServletRegistrationBean statViewServlet() {
//        logger.info("===>>> 初始化druid监控的信息");
//        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//        //白名单：
//        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
//        //IP黑名单 (存在共同时，deny优先于allow) : 如果满足deny的即提示:Sorry, you are not permitted to view this page.
//        servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
//        //登录查看信息的账号密码.
//        servletRegistrationBean.addInitParameter("loginUsername", "druid");
//        servletRegistrationBean.addInitParameter("loginPassword", "druid");
//        //是否能够重置数据.
//        servletRegistrationBean.addInitParameter("resetEnable", "false");
//        return servletRegistrationBean;
//    }

    /**
     * 对应配置web-stat-filter
     * @return  设置过滤器
     */
//    @Bean
//    public FilterRegistrationBean statFilter() {
//        logger.info("===>>> 初始化druid过滤的信息");
//        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//        //添加过滤规则.
//        filterRegistrationBean.addUrlPatterns("/*");
//        //添加不需要忽略的格式信息.
//        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
//        return filterRegistrationBean;
//    }

//    @Bean
//    PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
//        logger.info("===>>> 初始化druid持久层事务异常的后置处理器");
//        return new PersistenceExceptionTranslationPostProcessor();
//    }

    /**
     * 配置数据库的基本链接信息
     * 可以在application.properties中直接导入
     * @return  数据源
     */
//    @Bean(name = "dataSource")
//    @Primary
//    @ConfigurationProperties(prefix = "spring.datasource")
//    public DataSource dataSource() {
//        logger.info("===>>> 创建数据源");
//        return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
//    }

//    @Bean
//    public SqlSessionFactoryBean sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
//        logger.info("===>>> 构建mybatis的");
//        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
//        bean.setDataSource(dataSource);
//        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//        bean.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml"));
//        return bean;
//    }
}